package com.ingenio.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONArray;
import org.json.JSONObject;

import com.ingenio.business.Almacen;
import com.ingenio.business.Producto;
import com.ingenio.business.Proveedor;
import com.ingenio.business.UMProducto;
import com.ingenio.dao.AlmacenAdapter;
import com.ingenio.dao.InventarioAdapter;
import com.ingenio.dao.ProductoAdapter;
import com.ingenio.dao.ProveedorAdapter;

/**
 * Servlet implementation class ObtenerProductoServlet
 */
@WebServlet("/ObtenerProducto")
public class ObtenerProductoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ObtenerProductoServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String url = request.getHeader("referer");
		String[] parts = url.split("/");
		
		try {
			JSONObject json = new JSONObject();
			JSONArray ja = new JSONArray();
			if(request.getParameter("id") != ""){
				ProductoAdapter pa = new ProductoAdapter();
				InventarioAdapter ia = new InventarioAdapter();
				String id = request.getParameter("id");
				Producto p = null;
				Double cantidadActual = null;
				System.out.println(parts[parts.length-1]);
				if("generacion_pedido_proveedor.jsp".equals(parts[parts.length-1])){
					String id_proveedor = request.getParameter("codProveedor");
					Proveedor proveedor = null;
					
					if(id_proveedor != null) {
						Integer idProveedor = Integer.parseInt(id_proveedor);
						ProveedorAdapter proveedorAdapter = new ProveedorAdapter();
						proveedor = proveedorAdapter.devolverProveedor(idProveedor);
						p = pa.devolverProductoProveedor(id, proveedor);
					}
				}else {
					p = pa.devolverProducto(id);
				}
				
				AlmacenAdapter aa = new AlmacenAdapter();
				Almacen a = null;

				if(p != null){
					if("ajuste_inventario.jsp".equals(parts[parts.length-1])){
						Integer idAlmacen = Integer.parseInt(request.getParameter("idAlmacen"));
						a = aa.devolverAlmacen(idAlmacen);
						cantidadActual = ia.devolverCantidad(p, a);
					}else{
						//HARDCODED .. Tomar id de la session del user
						a = aa.devolverAlmacen(1);
						cantidadActual = ia.devolverCantidadActual(p, a);
					}
					json.put("descripcion", p.getDescProducto());
					json.put("stock", cantidadActual);
					for (UMProducto ump : p.getUmsProducto()) {
						JSONObject elemArray= new JSONObject();
						elemArray.put("descripcion", ump.getDescripcion());
						elemArray.put("id", ump.getUnidadMedida().getIdUnidadMedida());
						elemArray.put("set", ump.isUmpDefault());
						ja.put(elemArray);
					}
					json.put("um", ja);
				}else{
					json.put("error","error");
				}
			}else{
				json.put("error","error");
			}
			response.setContentType("application/json");
			response.getWriter().write(json.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static boolean isNumeric(String cadena) {
		try {
			Integer.parseInt(cadena);
			return true;
		} catch (NumberFormatException nfe){
			return false;
		}
	}

}
